/* Cache replacement policies */
// 实际如果是非内存操控的实现其实没有太大意义
// 基于最近访问的政策
// T = m * Tm + Th + E
// m  = 未命中率
// Tm = 发生未命中时进行主内存访问的时间
// Th = 延迟：引用缓存的时间
// E  = 次要影响，例如多处理器系统中的调度
/**
 * @desc 淘汰最久未被使用的数据
 * @typedef {object} LRU
 * @property { (key: number) => number } get
 * - 如果key在字典中存在，则先重置对应的value值，然后获取对应的节点curr，将curr节点从链表删除，并移动到链表的头部；
 * - 如果key在字典中不存在，则新建一个节点，并将节点放到链表的头部。当cache存满的时候，将链表最后一个节点删除即可。
 * @property { (key: number, value: number) => void } put
 * - 如果key在字典中存在，则把对应的节点放到链表头部，并返回对应的value值；
 * - 如果key在字典中不存在，则返回-1
 */

/* next - Distributed cache */
